Project Overview

Humor appeals can help draw audiences’ attention, and improve engagement with information, which is why they are often deployed as a creative alternative to more didactic messaging appeals (Nabi, R. L., Moyer-Gusé, E., and Byrne, S., 2007; Cline, T. W., & Kellaris, J. J., 2007; Blanc, N., & Brigaud, E., 2014). Thus, humorous appeals to persuade individuals to follow COVID-19 related preventative measures may help engage audiences and increase behavior change. Humorous messages, however, can take various forms, including, but not limited to irony, sarcasm, mockery and satire (Holbert et al., 2011; Polk et al., 2009). In the current set of studies, we focus on mocking and non-mocking forms of humor. Mocking forms are associated with more unfavorable evaluations of the target of the joke (Becker, 2012), as compared to non-hostile, more encouraging forms of humor, which can lead to persuasion (Lyttle, 2001; Yoon & Tinkham, 2013). Here, recognizing that not everyone has the luxury to avoid all contact with others, we manipulate humor in appeals such that mocking humorous messages ridicule individuals who are not following social distancing recommendations, despite being in positions that afford them the ability to do so; we contrast this with non-mocking humorous messages and fact based messages that do not derogate others.

The current analysis is part of a larger project with the goal of determining the degree to which several message framing interventions might enhance message effectiveness and intentions, norms, and beliefs related to social distancing. We also measured additional outcomes, including dehumanization of other people. This document provides an overview of the analysis related to humorous framing of health messages about social distancing. All hypotheses tested in this document were preregistered and prereigstration documents can be found here.

The current document presents analyses from a small pilot and two studies that were powered to detect effects of interest: Full Study 1 and Humor Study 2. In a prior pilot, individuals in mocking humor conditions reported lower message relevance and showed lower motivation to practice social distancing (please find the complete report here). In Full Study 1, participants were randomly assigned to either a message framing intervention group, a control message group, or no message group. Here, we only focused on mocking humor and a fact-based message control group. Each participant in the mocking humor intervention and message control groups saw a series of 5 messages about social distancing related to COVID-19 randomly sampled from a pool of 15 message variants previously normed for argument strength (M = 4.16, SD = 0.18, possible range = 1-5; for details, see the argument strength norming report. Each message was created to look like an instagram post that included a visual message about COVID-19 accompanied by a “post” about the message. Pairs of humor and fact-based messages were created using the same stem (e.g., “Staying home protects our community by stopping the spread of #covid19.”). The message control condition contained this stem only, whereas the mocking condition contained additional humorous text, which ridiculed people who would choose not to follow social distancing even though their circumstances allow for it. These messages were pre-tested for levels of funniness and perceived mockingness (see pret-test report here). Participants then completed various outcome and individual differences measures.

Similarly, in Humor Study 2, participants were randomly assigned to mocking humor, non-mocking humor or fact-based (non-humorous) message groups. Each participant saw a series of 5 messages about social distancing related to COVID-19, with framing based on the group they were assigned to. Participants in a given group were shown the same set of 5 messages in random orders. Similar to Full Study 1, we used sets of parallel messages which began with parallel stems across conditions (e.g., we created three messages that each started with: “Staying home protects our community by stopping the spread of #covid19.” and then included condition-specific additional text). The fact-based condition contained this stem only, whereas the mocking humor condition contained additional humorous framing the messages which ridiculed people who would choose not to follow social distancing even though their circumstances allow for it, and the non-mocking humor condition contained humorous framing which did not overtly ridicule any person or group.

To look at the complete set of images, please follow these links: mocking messages, non-mocking messages, control messages. Here is an example set of stimuli, where we present mocking humorous, and non-mocking humorous framings of the same fact-based (control) message.

Figure: Example of mocking and non-mocking framing for the same fact-based (control) message

Summary of findings

Full Study 1

condition number of subjects
message control 179
mocking 171

Primary results

  • Mocking humorous messages, as compared to non-humorous messages (message control), led to decreases in message favorability, and showed no difference for sharing and norms.

Secondary and exploratory results

  • Mocking humorous messages, as compared to non-humorous messages, led to decreases in self relevance of message, and self motivation to practice social distancing.
  • Subjects in mocking humor condition, as compared to message control condition, showed higher levels of dehumanization against other people, except for children and people with COVID-19.

Humor Study 2

condition number of subjects
fact-based 395
mocking 403
non-mocking 394
  • Manipulation checks were successful: humorous messages (mocking and non-mocking) were rated as more funny than fact-based (non-humorous) messages; mocking messages were rates as less kind than non-mocking messages.

Primary results

  • Compared to the messages in mocking humor condition, messages in fact-based condition and non-mocking humorous condition were rated as more self and socially relevant.
  • Partly conceptually replicating Study 1, subjects in mocking humor condition, as compared to non-mocking humor condition, showed significantly more dehumanization.
    • However, unlike Study 1, subjects in mocking humor condition and fact-based conditions, did not show different levels of dehumanization against other people.

Secondary and exploratory results

  • Compared to the mocking humorous condition, messages in fact-based and messages non-mocking humorous conditions were associated with stronger self and social motivation to maintain social distancing.
  • The following mediations were statistically significant
    • mocking humor → lower self relevance → lower self motivation
    • mocking humor → lower social relevance → lower social motivation
    • mocking humor (vs. non-mocking) → higher schadenfreude → higher dehumanization
  • Kindness did not mediate the relationship between mocking humor and dehumanization
    • However, interestingly higher perceived kindness of the messages was associated with higher dehumanization, and moderated the effect of condition on dehumanization, such that people who rated the mocking humor as less kind dehumanized others less.
  • Connectedness did not mediate the relationship between mocking humor and dehumanization
    • However, interestingly higher connectedness in response to messages was associated with higher dehumanization, and moderated the effect of condition on dehumanization, such that people who felt less connected in response to mocking humor dehumanized others less.

Demographics

Full Study 1

Humor Study 2

Socio-economic status

Full Study 1

Education

#### Income

Humor Study 2

Full Study 1 Preregistered Analysis

The preregistration for Full Study 1 can be found here: https://osf.io/8hn2g/

# tidy the data for analysis
data = data_study1

messages = data %>%
  filter(grepl("msg", survey_name)) %>%
  mutate(value = as.numeric(value)) %>%
  extract(item, "item", "msg_.*_(.*)") %>%
  spread(survey_name, value) %>%
  mutate(msg_favorability = msg_positive - msg_negative) %>%
  dplyr::select(-msg_negative, -msg_positive) %>%
  gather(survey_name, value, contains("msg")) %>%
  mutate(item = sprintf("%s_%s", survey_name, item)) %>%
  group_by(survey_name) %>%
  mutate(mean = mean(value, na.rm = TRUE),
         sd = sd(value, na.rm = TRUE),
         sd3 = 3*sd(value, na.rm = TRUE),
         value = ifelse(!grepl("familiarity", item) & value > mean + sd3, mean + sd3, value), # winsorize outliers
         value = ifelse(!grepl("familiarity", item) & value < mean - sd3, mean - sd3, value)) %>%
  dplyr::select(-mean, -sd, sd3) %>%
  ungroup(survey_name)

data_tidy = data %>%
  filter(grepl("norms|intentions|beliefs|dehumanization|cognition|acceptability|policy|^age$|gender", survey_name)) %>%
  mutate(value = as.numeric(value)) %>%
  bind_rows(messages) %>%
  group_by(survey_name) %>%
  mutate(mean = mean(value, na.rm = TRUE),
         sd = sd(value, na.rm = TRUE),
         sd3 = 3*sd(value, na.rm = TRUE),
         value = ifelse(!grepl("familiarity", item) & value > mean + sd3, mean + sd3, value), # winsorize outliers
         value = ifelse(!grepl("familiarity", item) & value < mean - sd3, mean - sd3, value)) %>%
  dplyr::select(-mean, -sd, sd3) %>%
  ungroup(survey_name)

data_person = data_tidy %>%
  filter(grepl("norms|intention|beliefs|acceptability|policy|cognition|dehumanization", item)) %>%
  group_by(condition, SID, survey_name) %>%
  summarize(value = mean(value, na.rm = TRUE))

data_dehumanization = data_tidy %>%
  filter(grepl("dehumanization", item)) %>%
  dplyr::select(SID, condition, item, value) %>%
  spread(item, value) %>%
  rename(muslims = dehumanization_1,
         chinese = dehumanization_2,
         italian = dehumanization_3,
         undocumented_immigrants = dehumanization_4,
         children = dehumanization_5,
         elderly = dehumanization_6,
         american = dehumanization_7,
         peoplewith_covid19 = dehumanization_8,
         peoplewith_weakimmune = dehumanization_9,
         unemployed = dehumanization_10,
         homeless = dehumanization_11)

dvs_covs = data_person %>%
  filter(grepl("dehumanization|norms|intention|beliefs|cognition|acceptability|policy", survey_name)) %>%
  group_by(survey_name) %>%
  mutate(value = ifelse(!grepl("dehumanization", survey_name), scale(value), value)) %>% #scale within survey
  spread(survey_name, value)

data_mod = messages %>%
  group_by(SID, survey_name) %>%
  extract(item, "message_id", "msg_.*_([0-9]{2})", remove = FALSE) %>%
  mutate(trial = row_number()) %>%
  dplyr::select(-item) %>%
  group_by(survey_name) %>%
  mutate(value = scale(value)) %>% #scale within survey
  spread(survey_name, value) %>%
  left_join(., dvs_covs) %>%
  mutate(condition = factor(condition, levels = c("message control", "mocking")),
         SID = as.factor(SID)) %>%
  ungroup() %>%
  mutate(condition = relevel(as.factor(condition), ref = "message control"))

data_mod_person = messages %>%
  group_by(SID, survey_name) %>%
  extract(item, "message_id", "msg_.*_([0-9]{2})", remove = FALSE) %>%
  mutate(trial = row_number()) %>%
  dplyr::select(-item) %>%
  group_by(SID, condition, survey_name) %>%
  summarize(value = mean(value, na.rm = TRUE)) %>% # take the mean across messages
  group_by(survey_name) %>%
  mutate(value = scale(value)) %>% # scale across people
  spread(survey_name, value) %>%
  left_join(., dvs_covs) %>%
  mutate(condition = relevel(as.factor(condition), ref = "message control"))

Primary hypotheses

H1

Hypothesis: Compared to the message control condition, messages using a humorous frame will be associated with stronger perceived norms related to social distancing among people in respondents’ town or city.

tl;dr: ; null result

Code:

mod <- lm(norms_town1 ~ condition, data = data_mod_person)

Results:

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.08053 0.0746 1.08 0.2811
conditionmocking -0.1648 0.1067 -1.544 0.1234

Plot:

H2

Hypothesis: Compared to the message control and no message conditions, messages using a humorous frame will be rated as more favorable.

tl;dr: ; evidence in opposite direction

Code:

mod <- lmer(msg_favorability ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.08238 0.06974 253.7 1.181 0.2386
conditionmocking -0.1725 0.09389 347.6 -1.837 0.06699

Plot:

H3

Hypothesis: Compared to the message control, messages using a humorous frame will be rated as being more likely to be shared.

tl;dr: ; null result

Code:

mod <- lmer(msg_share ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.05691 0.06867 194.2 0.8287 0.4083
conditionmocking -0.1157 0.09019 347.9 -1.283 0.2005

Plot:

Secondary hypotheses and research question

H4

Hypotheis: Relationship between humor and favorability will be stronger for individuals who report higher need for cognition

tl;dr: ; null result

Code:

mod <- lmer(msg_favorability ~ condition*cognition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.08302 0.06644 236.7 1.25 0.2127
conditionmocking -0.1737 0.08896 345.6 -1.953 0.0516
cognition -0.3377 0.06078 346.3 -5.556 5.51e-08
conditionmocking:cognition 0.122 0.08936 346.5 1.365 0.1731

Plot:

H5

Hypothesis: Relationship between humor and sharing will be stronger for individuals who report higher need for cognition

tl;dr: ; null result

Code:

mod <- lmer(msg_share ~ condition*cognition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.05653 0.06679 179.8 0.8463 0.3985
conditionmocking -0.1146 0.08706 346 -1.316 0.1891
cognition 0.2187 0.05949 346.8 3.677 0.0002735
conditionmocking:cognition 0.02126 0.08748 347.1 0.243 0.8081

Plot:

H6

Hypothesis: Compared to the message control condition, messages using a humorous frame will be rated as more socially relevant.

tl;dr: ; evidence in opposite direction

Code:

mod <- lmer(msg_share ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.0911 0.06271 158.6 1.453 0.1483
conditionmocking -0.1896 0.08233 345.7 -2.302 0.02191

Plot:

H7

Hypothesis: Compared to the message control condition, messages using a humorous frame will be associated with stronger perceived norms related to social distancing among respondents’ close friends and family.

tl;dr: ; null result

Code:

mod <- lm(norms_close1 ~ condition, data = data_mod_person)

Results:

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0785 0.07461 1.052 0.2935
conditionmocking -0.1607 0.1067 -1.505 0.1332

Plot:

H8

Hypothesis: Compared to the message control condition, messages using a humorous frame will be associated with stronger motivation to maintain social distancing.

tl;dr: ; marginal in opposite direction

Code:

mod <- lmer(msg_motiv_self ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.0739 0.06252 179 1.182 0.2387
conditionmocking -0.1516 0.08332 347.6 -1.82 0.06961

Plot:

H9

Hypothesis: Compared to the message control condition, messages using a humorous frame will be associated with stronger intentions to engage in social distancing.

tl;dr: ; null result

Code:

mod <- lm(intentions1 ~ condition, data = data_mod_person)

Results:

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.08014 0.0746 1.074 0.2834
conditionmocking -0.164 0.1067 -1.537 0.1252

Plot:

H10

Hypothesis: Compared to the message control condition, messages using a humorous frame will be associated with stronger perceived social acceptability of engaging in social distancing.

tl;dr: ; null result

Code:

mod <- lm(acceptability ~ condition, data = data_mod_person)

Results:

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.01409 0.07484 0.1882 0.8508
conditionmocking -0.02884 0.1071 -0.2693 0.7879

Plot:

Research question

Will humorous messages that ridicule people who don’t follow social distancing recommendations when they have the option to, have positive or negative (unintended) consequences in terms of leading to 1) more or less prejudice against vulnerable groups, and 2) greater or lesser support for public policies which protect such vulnerable groups?

tl;dr: Mocking leads to significantly more dehumanization for all groups, except “Children” and “People with COVID-19”

Code and results:

mod <- lm(dehumanization ~ condition, data = data_mod_person)
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 88.25 1.443 61.16 2.95e-188
conditionmocking -5.457 2.064 -2.644 0.008577
mod <- lm(policy ~ condition, data = data_mod_person)
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.02006 0.07484 0.268 0.7889
conditionmocking -0.04105 0.1071 -0.3834 0.7016

Plot:

For each group

stats
NOTE: regression stats correspond to comparison of mocking vs. fact-based condition
item name stats
dehumanization_9 peoplewith_weakimmune ß = -5.23, p = 0.02
dehumanization_8 peoplewith_covid19 ß = -3.61, p = 0.13
dehumanization_7 american ß = -4.76, p = 0.01
dehumanization_6 elderly ß = -6.22, p = 0.00
dehumanization_5 children ß = -3.25, p = 0.25
dehumanization_4 undocumented_immigrants ß = -5.77, p = 0.03
dehumanization_3 italian ß = -4.70, p = 0.03
dehumanization_2 chinese ß = -7.84, p = 0.00
dehumanization_11 homeless ß = -6.45, p = 0.01
dehumanization_10 unemployed ß = -4.83, p = 0.03
dehumanization_1 muslims ß = -7.37, p = 0.01

Follow-up to Full Study 1

Following the results from Full Study 1, we aimed to

  • replicate the backfiring effects of mocking humor on key message effectiveness outcomes,
  • to determine if these effects were specific to mocking humor, or if they would be triggered by any other form of humor, and
  • to test potential mediation mechanisms to explain the backfiring effects of mocking humor.

To accomplish this goal, we compared mocking humor messages to non-mocking humor messages and fact-based messages.


Humor Study 2 Preregistered Analysis

The preregistration for humor study can be found here.

# tidy the data for analysis
data = data_humorstudy

messages = data %>%
  filter(grepl("msg", survey_name)) %>%
  filter(!grepl("msg_open", survey_name)) %>%
  mutate(value = as.numeric(value)) %>%
  extract(item, "item", "msg_.*_(.*)") %>%
  mutate(item = sprintf("%s_%s", survey_name, item)) %>%
  group_by(survey_name) %>%
  mutate(mean = mean(value, na.rm = TRUE), 
         sd = sd(value, na.rm = TRUE),
         sd3 = 3*sd(value, na.rm = TRUE),
         value = ifelse(!grepl("familiarity", item) & value > mean + sd3, mean + sd3, value), # winsorize outliers
         value = ifelse(!grepl("familiarity", item) & value < mean - sd3, mean - sd3, value)) %>%
  ungroup(survey_name)

data_tidy = data %>%
  filter(grepl("norms|beliefs|dehumanization|schadenfreude|policy|empathy|^age$|gender", survey_name)) %>%
  mutate(value = as.numeric(value)) %>%
  bind_rows(messages) %>%
  group_by(survey_name) %>%
  mutate(mean = mean(value, na.rm = TRUE),
         sd = sd(value, na.rm = TRUE),
         sd3 = 3*sd(value, na.rm = TRUE),
         value = ifelse(!grepl("familiarity", item) & value > mean + sd3, mean + sd3, value), # winsorize outliers
         value = ifelse(!grepl("familiarity", item) & value < mean - sd3, mean - sd3, value)) %>%
  ungroup(survey_name)

data_person = data_tidy %>%
  filter(grepl("norms|beliefs|dehumanization|schadenfreude|policy|empathy", item)) %>%
  mutate(survey_name = ifelse(grepl("dehumanization", survey_name), 
                              ifelse(!grepl("dehumanization_14|dehumanization_17|dehumanization_21", item),
                                     "dehumanization_mostvulnerable", "dehumanization_othergroups"), 
                              survey_name)) %>%
  group_by(condition, SID, survey_name) %>%
  summarize(value = mean(value, na.rm = TRUE))

data_dehumanization = data_tidy %>%
  filter(grepl("dehumanization", item)) %>%
  dplyr::select(SID, condition, item, value) %>%
  spread(item, value) %>%
  rename(muslims = dehumanization_10,
         chinese = dehumanization_11,
         italian = dehumanization_12,
         undocumented_immigrants = dehumanization_13,
         children = dehumanization_14,
         elderly = dehumanization_15,
         american = dehumanization_16,
         peoplewith_covid19 = dehumanization_17,
         peoplewith_weakimmune = dehumanization_18,
         unemployed = dehumanization_19,
         homeless = dehumanization_20,
         stayinghome = dehumanization_21,
         unnecessarytrips = dehumanization_22)

data_policy = data_tidy %>%
  filter(survey_name == "policy") %>%
  dplyr::select(SID, condition, item, value) %>%
  spread(item, value) 

dvs_covs = data_person %>%
  filter(grepl("norms|beliefs|dehumanization|schadenfreude|policy|empathy", survey_name)) %>%
  group_by(survey_name) %>%
  mutate(value = ifelse(!grepl("dehumanization|empathy", survey_name), scale(value), value)) %>% #scale within survey
  spread(survey_name, value)

data_mod = messages %>%
  group_by(SID, survey_name) %>%
  extract(item, "message_id", "msg_.*_([0-9]{2})", remove = FALSE) %>%
  mutate(trial = row_number()) %>%
  dplyr::select(-item, -mean, -sd, -sd3) %>%
  group_by(survey_name) %>%
  mutate(value = scale(value)) %>% #scale within survey
  spread(survey_name, value) %>%
  left_join(., dvs_covs) %>%
  mutate(condition = factor(condition, levels = c("fact-based", "mocking", "non-mocking")),
         SID = as.factor(SID)) %>%
  ungroup()

data_mod_person = messages %>%
  group_by(SID, survey_name) %>%
  extract(item, "message_id", "msg_.*_([0-9]{2})", remove = FALSE) %>%
  mutate(trial = row_number()) %>%
  dplyr::select(-item, -mean, -sd, -sd3) %>%
  group_by(SID, condition, survey_name) %>%
  summarize(value = mean(value, na.rm = TRUE)) %>% # take the mean across messages
  group_by(survey_name) %>%
  mutate(value = scale(value)) %>% # scale across people
  spread(survey_name, value) %>%
  left_join(., dvs_covs)

Stimuli and Manipulation checks

Stimuli

In this study, we used three manipulations (or framings) of social distancing health messages: 1) mocking humor, 2) non-mocking humor, and 3) fact-based. Using pretest scores (which can be found here), we used the following criteria to select humorous messages:

  1. The funniness score should be greater than 2 (which corresponds to “a bit funny”).
  2. For mocking messages: the mocking score should be greater than the average mocking scores for mocking messages in the pretest (M = 1.51, SD = 0.24)
  3. For non-mocking messages: the mocking score should be lower than the average mocking scores for non-mocking messages in the pretest (M = 2.32, SD = 0.32)

Based on these criteria, we ended up with a set of 5 messages in each condition, such that each message in the fact-based condition had one corresponding mocking framing and one non-mocking framing. Following are the texts for the stimuli:

H1

Hypothesis: Compared to the messages in fact-based condition, messages in both mocking humorous and non-mocking humorous conditions will be rated as more funny.

tl;dr:

Code:

mod <- lmer(msg_funny ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.42 0.152 4.381 -2.754 0.046
conditionmocking 0.516 0.047 1188.985 11.034 <0.001
conditionnon-mocking 0.741 0.047 1188.842 15.764 <0.001

Plot:

H2

Hypothesis: Compared to the messages in non-mocking humorous condition, messages in mocking humorous condition will be rated as less kind.

tl;dr:

Code:

mod <- lmer(msg_kind_1 ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.306 0.106 4.798 2.875 0.037
conditionmocking -0.813 0.047 794.987 -17.397 <0.001

Plot:

Primary Hypotheses

H3

Hypothesis: Compared to the messages in mocking humor condition, messages in fact-based condition and non-mocking humorous condition will be rated as more socially relevant.

tl;dr:

Code:

mod <- lmer(msg_rel_social ~ condition + (1|SID) + (1|message_id), data = data_test)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.315 0.102 5.294 -3.084 0.025
conditionfact-based 0.48 0.054 1188.997 8.921 <0.001
conditionnon-mocking 0.472 0.054 1188.997 8.758 <0.001

Plot:

H4

Hypothesis: Compared to the messages in mocking humor condition, messages in fact-based condition and non-mocking humorous condition will be rated as more self relevant

tl;dr:

Code:

mod <- lmer(msg_rel_self ~ condition + (1|SID) + (1|message_id), data = data_test)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.371 0.121 4.834 -3.065 0.029
conditionfact-based 0.616 0.053 1188.996 11.623 <0.001
conditionnon-mocking 0.505 0.053 1188.996 9.531 <0.001

Plot:

H5

Hypothesis: Compared to fact-based and non-mocking humor conditions, messages using a mocking humor frame will be associated with more dehumanization against vulnerable groups.

tl;dr: mixed

Code:

mod <- lm(dehumanization ~ condition, data = data_test)

Results:

  Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.157 0.443 36.476 <0.001
conditionfact-based -0.288 0.627 -0.46 0.646
conditionnon-mocking -1.752 0.63 -2.78 0.005

Plot:

Averaged across groups

get_coeff = function (x) {
  m <- paste0(x, " ~ condition")
  m_coeff <- summary(lm(m, data = data_test))$coefficients
  return(sprintf("ß = %.2f, p = %.2f", m_coeff[2,1], m_coeff[2,4]))
}

data_test <- data_dehumanization %>%
  filter(condition != "non-mocking") %>%
  mutate(condition = relevel(as.factor(condition), ref = "fact-based"))

dehumanization_labels <- data_tidy %>%
  filter(survey_name == "dehumanization") %>%
  dplyr::select(SID, item, value) %>%
  mutate(name = ifelse(item == "dehumanization_10", "muslims",
                ifelse(item == "dehumanization_11", "chinese",
                ifelse(item == "dehumanization_12", "italian",
                ifelse(item == "dehumanization_13", "undocumented_immigrants",
                ifelse(item == "dehumanization_14", "children",
                ifelse(item == "dehumanization_15", "elderly",
                ifelse(item == "dehumanization_16", "american",
                ifelse(item == "dehumanization_17", "peoplewith_covid19",
                ifelse(item == "dehumanization_18", "peoplewith_weakimmune",
                ifelse(item == "dehumanization_19", "unemployed",
                ifelse(item == "dehumanization_20", "homeless",
                ifelse(item == "dehumanization_21", "stayinghome",
                ifelse(item == "dehumanization_22", "unnecessarytrips", item)))))))))))))) %>%
  dplyr::select(-SID, -value) %>%
  unique() %>%
  mutate(label = lapply(name, get_coeff)) %>%
  arrange(item)

data_person %>%
  filter(grepl("mostvulnerable", survey_name)) %>%
  mutate(value = ifelse(grepl("mostvulnerable", survey_name), 100 - value, value)) %>%
  plot_hypothesis(survey = "mostvulnerable", palette = palette_cond_humorstudy)  + 
  ylab("") +
  scale_x_discrete(name ="", labels = "Average across groups") +
  coord_flip()

For each group

stats
NOTE: regression stats correspond to comparison of mocking vs. fact-based condition
item name stats
dehumanization_22 unnecessarytrips ß = -0.13, p = 0.96
dehumanization_21 stayinghome ß = -0.32, p = 0.79
dehumanization_20 homeless ß = 0.47, p = 0.78
dehumanization_19 unemployed ß = -0.72, p = 0.65
dehumanization_18 peoplewith_weakimmune ß = -0.27, p = 0.87
dehumanization_17 peoplewith_covid19 ß = 0.10, p = 0.95
dehumanization_16 american ß = 0.20, p = 0.88
dehumanization_15 elderly ß = -0.15, p = 0.92
dehumanization_14 children ß = 2.09, p = 0.26
dehumanization_13 undocumented_immigrants ß = -2.08, p = 0.27
dehumanization_12 italian ß = -0.37, p = 0.80
dehumanization_11 chinese ß = -1.00, p = 0.54
dehumanization_10 muslims ß = -0.99, p = 0.59

Secondary Hypotheses

H6

Hypothesis: Compared to the mocking humorous condition, messages in fact-based and messages non-mocking humorous conditions will be associated with stronger self motivation to maintain social distancing.

tl;dr:

Code:

mod <- lmer(msg_motiv_self ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.204 0.112 5.14 -1.823 0.126
conditionfact-based 0.347 0.056 1188.998 6.233 <0.001
conditionnon-mocking 0.268 0.056 1188.998 4.806 <0.001

Plot:

H7

Hypothesis: Compared to the mocking humorous condition, messages in fact-based and messages non-mocking humorous conditions will be associated with stronger social motivation to maintain social distancing.

tl;dr:

Code:

mod <- lmer(msg_motiv_other ~ condition + (1|SID) + (1|message_id), data = data_mod)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.203 0.106 5.263 -1.914 0.111
conditionfact-based 0.319 0.055 1189.077 5.771 <0.001
conditionnon-mocking 0.296 0.055 1189.077 5.343 <0.001

Plot:

H8

Hypothesis: Compared to the mocking humorous condition, messages in fact-based and messages non-mocking humorous conditions will be rated as more self relevant (H2), which will be associated with stronger self motivation to maintain social distancing.

tl;dr:

Code:

mod1 <- lm(msg_rel_self ~ condition, data = data_mod_person)
mod2 <- lm(msg_motiv_self ~ msg_rel_self + condition, data = data_mod_person)
mod <- mediate(mod1, mod2, sims=1000, treat="condition", mediator="msg_rel_self")

Results:

mod1
  Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.371 0.02146 -17.29 2.264e-65
conditionfact-based 0.6157 0.0305 20.18 1.102e-87
conditionnon-mocking 0.5052 0.03052 16.55 3.443e-60
mod2
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0538 0.01664 3.233 0.001233
msg_rel_self 0.6938 0.009805 70.76 0
conditionfact-based -0.07998 0.02386 -3.352 0.000807
conditionnon-mocking -0.08259 0.02362 -3.496 0.0004758
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME             0.4267       0.3828         0.47  <2e-16 ***
## ADE             -0.0789      -0.1261        -0.03   0.004 ** 
## Total Effect     0.3477       0.2859         0.41  <2e-16 ***
## Prop. Mediated   1.2248       1.0862         1.43  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 5960 
## 
## 
## Simulations: 1000

NOTE: ACME = Average Causal Mediation Effect

ADE = Average Direct Effect

Plot:

H9

Hypothesis: Compared to the mocking humorous condition, messages in fact-based and messages non-mocking humorous conditions will be rated as more socially relevant (H1), which will be associated with stronger social motivation to maintain social distancing.

tl;dr:

Code:

mod1 <- lm(msg_rel_social ~ condition, data = data_test)
mod2 <- lm(msg_motiv_other ~ msg_rel_self + condition, data = data_test)
mod <- mediate(mod1, mod2, sims=1000, treat="condition", mediator="msg_rel_self")

Results:

mod1
  Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.315 0.02171 -14.51 6.545e-47
conditionfact-based 0.4801 0.03086 15.56 1.524e-53
conditionnon-mocking 0.4717 0.03088 15.28 1.047e-51
mod2
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.03937 0.01741 2.261 0.02378
msg_rel_self 0.6546 0.01026 63.82 0
conditionfact-based -0.08387 0.02496 -3.36 0.0007838
conditionnon-mocking -0.03502 0.02471 -1.417 0.1565
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME              0.314        0.272         0.36  <2e-16 ***
## ADE              -0.084       -0.137        -0.03   0.002 ** 
## Total Effect      0.230        0.165         0.29  <2e-16 ***
## Prop. Mediated    1.367        1.115         1.77  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 5960 
## 
## 
## Simulations: 1000

NOTE: ACME = Average Causal Mediation Effect

ADE = Average Direct Effect

Plot:

H10

Hypothesis: Compared to the non-mocking humor condition, messages in mocking humor condition will lead to higher schadenfreude against people who don’t follow precautionary measures when they can, which will be associated with more dehumanization of other people.

tl;dr:

Code:

mod1 <- lm(schadenfreude ~ condition, data = data_test)
mod2 <- lm(dehumanization ~ schadenfreude + condition, data = data_test)
mod <- mediate(mod1, mod2, sims=1000, treat="condition", mediator="schadenfreude")

Results:

mod1
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1205 0.0221 5.452 5.171e-08
conditionfact-based -0.282 0.03127 -9.02 2.493e-19
conditionnon-mocking -0.0824 0.03144 -2.621 0.00879
mod2
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.68 0.4354 36.02 2.511e-257
schadenfreude 3.938 0.2538 15.51 2.972e-53
conditionfact-based 0.8226 0.6187 1.33 0.1837
conditionnon-mocking -1.427 0.6182 -2.309 0.021
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME             -1.107       -1.375        -0.86  <2e-16 ***
## ADE               0.793       -0.488         1.98    0.23    
## Total Effect     -0.314       -1.602         0.85    0.64    
## Prop. Mediated    1.229      -24.866        22.74    0.64    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 5999 
## 
## 
## Simulations: 1000

NOTE: ACME = Average Causal Mediation Effect

ADE = Average Direct Effect

Plot:

H11

Hypothesis: Compared to the non-mocking humor condition, messages in mocking humor condition will be rated as less kind, which will be associated with more dehumanization of other people.

tl;dr: ; evidence in opposite direction; higher perceived kindness is associated with higher dehumanization

Code:

mod1 <- lm(msg_kind_1 ~ condition, data = data_test)
mod2 <- lm(dehumanization ~ msg_kind_1 + condition, data = data_test)
mod <- mediate(mod1, mod2, sims=1000, treat="condition", mediator="schadenfreude")

Results:

mod1
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.3057 0.02099 14.56 7.396e-47
conditionmocking -0.8133 0.02952 -27.56 3.884e-153
mod2
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 14.03 0.4544 30.88 7.365e-188
msg_kind_1 1.23 0.3342 3.678 0.0002377
conditionmocking 2.755 0.6794 4.055 5.109e-05
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME             -0.987       -1.502        -0.50  <2e-16 ***
## ADE               2.755        1.492         4.09  <2e-16 ***
## Total Effect      1.767        0.579         3.03   0.006 ** 
## Prop. Mediated   -0.549       -1.752        -0.24   0.006 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 3985 
## 
## 
## Simulations: 1000

NOTE: ACME = Average Causal Mediation Effect

ADE = Average Direct Effect

Plot:

H12

Hypothesis: Compared to the non-mocking humor condition, messages in mocking humor condition will be associated with a greater feeling of disconnection from other people in ending the pandemic, which will be associated with more dehumanization of other people.

tl;dr: ; evidence in opposite direction; higher perceived disconnectedness is associated with lower dehumanization

Code:

mod1 <- lm(msg_connected_1 ~ condition, data = data_test)
mod2 <- lm(dehumanization ~ msg_connected_1 + condition, data = data_test)
mod <- mediate(mod1, mod2, sims=1000, treat="condition", mediator="msg_connected_1")

Results:

mod1
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.867 0.02195 130.6 0
conditionmocking 0.3639 0.03087 11.79 1.445e-31
mod2
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.43 1.019 16.13 9.493e-57
msg_disconnected -0.7072 0.32 -2.21 0.02715
conditionmocking 2.012 0.6341 3.174 0.001517
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                Estimate 95% CI Lower 95% CI Upper p-value    
## ACME             -0.252       -0.500        -0.03   0.028 *  
## ADE               2.009        0.662         3.26  <2e-16 ***
## Total Effect      1.757        0.470         2.91   0.008 ** 
## Prop. Mediated   -0.144       -0.500        -0.01   0.036 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 3985 
## 
## 
## Simulations: 1000

NOTE: ACME = Average Causal Mediation Effect

ADE = Average Direct Effect

Plot:

Research Questions

RQ1

Perceived unkindness of the messages can likely affect the message level outcomes. What is the relationship between perceived unkindness of the messages and the message level outcomes, specifically, motivation to engage in social distancing, and self and social relevance of the messages?

tl;dr: Perceived kindness is positively associated with all message level outcomes: 1) self relevance, 2) social relevance, 3) self motivation, 4) social motivation, and 5) intention to share.

Results:

lmer(msg_rel_self ~ msg_kind_1 + (1|condition) + (1|message_id) + (1|SID), data = data_mod)
  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.003 0.153 4.598 0.019 0.986
msg_kind_1 0.304 0.012 5826.27 26.281 <0.001
lmer(msg_rel_social ~ msg_kind_1 + (1|condition) + (1|message_id) + (1|SID), data = data_mod)
  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.002 0.109 5 0.018 0.986
msg_kind_1 0.312 0.012 5742.183 26.294 <0.001
lmer(msg_motiv_self ~ msg_kind_1 + (1|condition) + (1|message_id) + (1|SID), data = data_mod)
  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.001 0.102 5.037 0.011 0.992
msg_kind_1 0.331 0.011 4064.233 28.945 <0.001
lmer(msg_motiv_other ~ msg_kind_1 + (1|condition) + (1|message_id) + (1|SID), data = data_mod)
  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0.001 0.091 4.481 0.013 0.99
msg_kind_1 0.337 0.012 1534.869 29.14 <0.001
lmer(msg_share ~ msg_kind_1 + (1|condition) + (1|message_id) + (1|SID), data = data_mod)
  Estimate Std. Error df t value Pr(>|t|)
(Intercept) 0 0.065 5.087 -0.006 0.996
msg_kind_1 0.309 0.011 2181.268 28.565 <0.001

Plot:

p1 <- data_mod_person %>%
  ggplot(aes(msg_kind_1, msg_rel_self, color = condition)) +
  geom_point(size=0.5) +
  scale_color_manual(values = palette_cond_humorstudy) + 
  geom_smooth(method = "lm", color = "black") + 
  xlab("Perceived kindness of message") +
  ylab("Self relevance") +
  theme_light() +
  theme(legend.position = "none")

p2 <- data_mod_person %>%
  ggplot(aes(msg_kind_1, msg_rel_social, color = condition)) +
  geom_point(size=0.5) +
  scale_color_manual(values = palette_cond_humorstudy) + 
  geom_smooth(method = "lm", color = "black") + 
  xlab("Perceived kindness of message") +
  ylab("Social relevance") +
  theme_light() +
  theme(legend.position = "none")

p3 <- data_mod_person %>%
  ggplot(aes(msg_kind_1, msg_motiv_self, color = condition)) +
  geom_point(size=0.5) +
  scale_color_manual(values = palette_cond_humorstudy) + 
  geom_smooth(method = "lm", color = "black") + 
  xlab("Perceived kindness of message") +
  ylab("Self motivation") +
  theme_light() +
  theme(legend.position = "none")

p4 <- data_mod_person %>%
  ggplot(aes(msg_kind_1, msg_motiv_other, color = condition)) +
  geom_point(size=0.5) +
  scale_color_manual(values = palette_cond_humorstudy) + 
  geom_smooth(method = "lm", color = "black") + 
  xlab("Perceived kindness of message") +
  ylab("Social motivation") +
  theme_light() +
  theme(legend.position = "none")

p5 <- data_mod_person %>%
  ggplot(aes(msg_kind_1, msg_share, color = condition)) +
  geom_point(size=0.5) +
  scale_color_manual(values = palette_cond_humorstudy) + 
  geom_smooth(method = "lm", color = "black") + 
  xlab("Perceived kindness of message") +
  ylab("Intent to share") +
  theme_light() +
  theme(legend.position = "none")

grid.arrange(p1, p2, p3, p4, p5)

RQ2

Empathic concerns of individuals can affect their interaction with mocking messages. What is the moderating effect of empathic concern on the relationship between mocking humor and perceived kindness of the messages?

tl;dr: Empathy postively moderates the effect of mocking messages on perceived kindness: mocking messages were rated as more kind by individuals with higher empathic concern, as compared to individuals with lower empathic concern.

Code:

lmer(msg_kind_1 ~ condition*empathy + (1|SID) + (1|message_id), data = data_test)

Results:

  Estimate Std. Error df t value Pr(>|t|)
(Intercept) -0.037 0.239 109.373 -0.154 0.878
conditionmocking -1.614 0.309 792.947 -5.223 <0.001
empathy 0.112 0.07 792.947 1.602 0.11
mocking:empathy 0.262 0.1 792.947 2.623 0.009

Plot:

RQ3

Across experimental groups, are there differences in perceived norms about social distancing in town/city?

tl;dr: No significant difference in norms across mocking, non-mocking and fact-based conditions.

Code:

mod <- anova(lm(norms_town ~ condition, data = data_mod_person))

Results

Plot

RQ4

Across experimental groups, are there differences in various beliefs about social distancing?

tl;dr: No significant difference in any belief measure across mocking, non-mocking and fact-based conditions.

Code:

mod <- anova(lm(belief ~ condition, data = data_mod_person))

Results

Click for belief items

  • beliefs_mental: If I stay home every day for the next two weeks, and avoid social contact, even if I’m not sick, I will: avoid chaos/feel lonely/hurt mental health.
  • beliefs_others_home: If other people stay home and avoid all social contact, it is less important for me to.
  • beliefs_safe_others: If I stay home every day for the next two weeks, and avoid social contact, even if I’m not sick I will: keep others/family members safe/prevent spread of COVID-19.
  • beliefs_safe_self: If I stay home every day for the next two weeks, and avoid social contact, even if I’m not sick: keep myself safe/will be less likely to get sick.
  • beliefs_infect_now: How many people do you think will be infected with coronavirus in the USA 1 month from now?
  • beliefs_norms: If I stay home every day for the next two weeks, and avoid social contact, even if I’m not sick: it will be accepted by friends/family/coworkers.
  • beliefs_environment: If I stay home every day for the next two weeks, and avoid social contact, even if I’m not sick: it will create less pollution/will be good for environment.
  • beliefs_infect_month: How many people do you think will be infected with coronavirus in the USA 1 month from now?
Anova results for (belief ~ condition) models.
belief Df Sumsq Meansq Fval Pr
beliefs_mental 2 1.181 0.5905 0.5901 0.5545
beliefs_others_home 2 0.03276 0.01638 0.01636 0.9838
beliefs_safe_others 2 1.387 0.6935 0.6932 0.5002
beliefs_safe_self 2 0.3138 0.1569 0.1567 0.855
beliefs_infect_now 2 1.903 0.9517 0.9517 0.3864
beliefs_norms 2 0.01627 0.008136 0.008122 0.9919
beliefs_environment 2 0.9516 0.4758 0.4754 0.6218
beliefs_infect_month 2 3.229 1.615 1.616 0.1991

Plot

RQ5

Across experimental groups, are there differences in support for public policy regarding COVID-19 which support vulnerable populations?

tl;dr: No significant difference in any belief measure across mocking, non-mocking and fact-based conditions.

Code:

mod <- anova(lm(policy ~ condition, data = data_mod_person))

Results

Anova results for (policy ~ condition) models.
Support for Df Sumsq Meansq Fval Pr
Proposed policies to contain COVID-19 2 0.01389 0.006944 0.006933 0.9931
Government response priorities 2 1.007 0.5033 0.5029 0.6049
Differential policies for young and old 2 2.076 1.038 1.038 0.3544

Click for policy items Proposed policies to contain COVID-19

To what extent do you support the following policies in response to the COVID-19 pandemic?

  • Increased funding for Coronavirus research, and vaccine development.
  • Two weeks of paid sick leave for workers during the COVID-19 pandemic to help those impacted by quarantine orders or those who must stay home to care for children.
  • Paid leave at 67% of average monthly earnings for unemployment caused by COVID-19.
  • Free coronavirus testing (including emergency room visits and doctor fees) for all U.S. citizens and permanent residents.
  • Two rounds of direct payment to taxpayers of on average $1000 each to help with short-term economic fallout from the COVID-19 pandemic.
  • Expanded coverage of small business loans to help small companies with fewer than 500 employees to navigate the economic fallout from the COVID-19 pandemic.
  • Bailouts for large corporations negatively affected by the pandemic (e.g., airlines, hotels, casinos, cruise line operators, shopping mall operators, etc.).
  • Closing borders to all, except U.S. citizens and permanent residents, to help slow the spread of the coronavirus across borders.
  • Increased government surveillance and tracking of Americans, residents, and non-residents to monitor the spread of COVID-19.
  • Closing immigration courts and detention centers to reduce the spread of COVID-19.
  • Publicly funded health insurance (“Medicare for all”) to ensure adequate health coverage for all during the current and future pandemics.
  • Expand access to food assistance programs, such as SNAP and WIC, to help with short-term economic fallout from the COVID-19 pandemic.
  • Require all non-essential employees to shelter-in-place (i.e., stay in homes and limit travel to only essential trips) to slow the spread of the coronavirus.
  • Closure of all non-essential businesses until further notice to help slow the spread of the coronavirus.
  • Maintain social distancing of at least 6 feet from other people and refrain from social gatherings of more than 10 people to help slow the spread of the coronavirus.
  • Increased funding for emergency care.
  • Fine individuals who violate social distancing ordinances.
  • Arrest individuals who violate social distancing ordinances.

Government response priorities

With regard to how the government should respond to the COVID-19 pandemic, to what extent do you agree with the following:

  • Getting the economy back on track should be the most important factor in government decisions about COVID-19 policies
  • Saving the most lives should be the most important factor in government decisions about COVID-19 policies
  • The government should impose more restrictions on people to help stop the spread of coronavirus
  • The government should let individuals choose individually how they want to behave to protect themselves and others from the coronavirus

Differential policies for young and old

To balance the needs of public health with the needs of the economy, one proposed policy is to allow some members of society to go about their day-to-day activities with lesser restrictions than other members. For example, young people might be allowed to meet each other for coffee while older or more vulnerable groups are required to remain at home. To what extent would disagree or agree with such a policy?

Plot

get_coeff = function (x) {
  m <- paste0(x, " ~ condition")
  m_coeff <- anova(lm(m, data = data_test))
  return(sprintf("F = %.2f, p = %.2f", m_coeff$`F value`[1], m_coeff$`Pr(>F)`[1]))
}

data_test <- data_policy

policy_labels <- data_tidy %>%
  filter(survey_name == "policy") %>%
  dplyr::select(SID, item, value) %>%
  mutate(name = ifelse(item == "policy_1", "Funding for coronavirus research/vaccine",
                ifelse(item == "policy_2", "2 weeks paid sick leave for workers with kids",
                ifelse(item == "policy_3", "67% of average monthly earnings for unemployment",
                ifelse(item == "policy_4", "Free coronavirus testing for US residents",
                ifelse(item == "policy_5", "Two rounds of direct payment $1000 each",
                ifelse(item == "policy_6", "Expand small business loan coverage",
                ifelse(item == "policy_7", "Bailouts for large corporations",
                ifelse(item == "policy_8", "Closing borders to non US residents",
                ifelse(item == "policy_9", "Increased government surveillance",
                ifelse(item == "policy_10", "Closing immigration courts/detention centers",
                ifelse(item == "policy_11", "Publicly funded health insurance (Medicare)",
                ifelse(item == "policy_12", "Expand food assistance programs (SNAP/WIC)",
                ifelse(item == "policy_13", "Require all non-essentials to shelter-in-place",
                ifelse(item == "policy_14", "Closure of all non-essential businesses",
                ifelse(item == "policy_15", "Maintain social distancing (>6 ft from others)",
                ifelse(item == "policy_16", "Increased funding for emergency care.",
                ifelse(item == "policy_17", "Fine individuals who violate social distancing",
                ifelse(item == "policy_18", "Arrest individuals who violate social distancing", item))))))))))))))))))) %>%
  dplyr::select(-SID, -value) %>%
  unique() %>%
  mutate(label = lapply(item, get_coeff)) %>%
  arrange(item)

data_tidy %>%
  filter(survey_name == "policy") %>%
  mutate(survey_name = ifelse(survey_name == "policy", item, survey_name)) %>%
  left_join(., policy_labels, by = "item") %>%
  plot_hypothesis(survey = "policy", palette = palette_cond_humorstudy) + 
  ylab("Policy support scale") +
  scale_x_discrete(name ="Policy choice", labels = policy_labels$name, expand = c(.1, .5)) +
  ylim(NA, 9) +
  geom_text(aes(y=7.5, label=label, hjust=0), angle=0, size=3) +
  coord_flip() + 
  labs(caption = "NOTE: stats correspond to anova results") + 
  theme(axis.text.y = element_text(angle = 25, hjust = 1)) + 
  ggtitle("Proposed policies")